package com.wrb.pwd.enums;

import java.util.Random;

/**
 * @author wrb
 * @date 2019/10/15 11:43
 */
public enum PasswordTypeEnum {
	//数字
	NUMBER
	//大写字母
	, UPPER_CASE_LETTER
	//小写字母
	, LOWER_CASE_LETTER
	//特殊符号
	, SPACIAL_SYMBOL;

	private static String symbolStr = "+-*/=@#$%?";

	/**
	 * 修改密码规则
	 * <p>
	 * ASCII 表
	 * 65-90 --> A-Z
	 * 97-122 --> a-z
	 * 48-57 --> 1-9
	 * 33-47 58-64 91-96 123 -126 --> 特殊符号 其中 \ 为 92，` 为 96 （特殊符号从字符串拿）
	 *
	 * @return
	 */
	public static char getCharByType(PasswordTypeEnum type, long seed) {
		if (NUMBER.equals(type)) {
			return (char) (new Random(seed).nextInt(10) + 48);
		} else if (UPPER_CASE_LETTER.equals(type)) {
			return (char) (new Random(seed).nextInt(26) + 65);
		} else if (LOWER_CASE_LETTER.equals(type)) {
			return (char) (new Random(seed).nextInt(26) + 97);
		} else if (SPACIAL_SYMBOL.equals(type)) {
			return symbolStr.charAt(new Random(seed).nextInt(10));
		} else {
			throw new IllegalArgumentException("密码类型不能为空");
		}
	}

}
